#pragma once
#ifndef _KLAS_FONT_HPP_
#define _KLAS_FONT_HPP_

#include "../Library.hpp"
#include "../Platform.hpp"
#include "../math/Vector2.hpp"


#include <string>
using std::string;


namespace klas
{
  namespace graphics
  {
    //! A low level, pure virtual font class.
    class KLAS_API Font: public virtual library::Base
    {
    public:

      //! Pure virtual dtor.
      virtual ~Font() {}

      //! Load in a font from a file.
      /*! \param filepath The path of the font. */
      virtual bool load(string filepath, uint32 size = 12) = 0;

      //! Returns the length of the string.
      virtual double len(string str) = 0;

      //! Returns if the font is valid.
      virtual bool isValid() const = 0;

      //! Changes the size of the font.
      virtual bool setSize(uint32 size) = 0;

      //! Gets the size of the font
      virtual uint32 getSize() const = 0;

    };
  }
}

#endif